<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <script src="./vue.js"></script>
    <style>
      * {
        margin: 0;
        padding: 0;
      }
      .mask-wrap {
        position: fixed;
        top: 0;
        left: 0;
        height: 100vh;
        width: 100%;
        background-color: rgba(0, 0, 0, 0.2);
        display: flex;
        justify-content: center;
        align-items: center;
        padding: 10px;
      }
      .content {
        width: 800px;
        height: 500px;
        background-color: white;
      }
    </style>
  </head>
  <body>
    <div id="app">
      <button @click="flag=true">添加用户</button>
      <my-mask :show="flag" title="添加用户">
        <template #title>
          <em>添加用户</em>
        </template>
        <!-- 默认插槽 -->
        <template #default>
          <input type="text" placeholder="用户名" />
          <input type="text" placeholder="密码" />
          <button>确认</button>
        </template>
      </my-mask>
    </div>
  </body>
  <script>
    // 容器组件
    //
    let app = Vue.createApp({
      data() {
        return {
          flag: false,
        };
      },
    });
    // 组件也是vue实例  对比函数 理解组件
    // 注册组件 组件名 组件选项  可以在当前根实例下的所有vue实例模板中使用
    app.component("my-mask", {
      props: ["show"],
      data() {
        return {};
      },
      template: `
        <div class="mask-wrap" v-show="show">
          <div class="content">
              <h1>
                <slot name="title"></slot>  
              </h1>
              <slot></slot>
          </div>
        </div>
      `,
    });
    app = app.mount("#app");
  </script>
</html>
